package com.springweb.unit5.config;

import javax.servlet.MultipartConfigElement;
import javax.servlet.ServletRegistration;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
/**
 * 
 *
 * Description: 配置ContextLoaderListener,DispatcherServlet
 *
 * @author zhangxujun
 * @version 1.0
 * <pre>
 * Modification History: 
 * Date         Author			Version     Description 
 * ------------------------------------------------------------------ 
 * 2017年11月14日      zhangxujun       1.0         1.0 Version 
 * </pre>
 */
public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer  {

	// 配置ContextLoaderListener,指定配置类
	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class<?>[] {RootConfig.class};
	}

	// 配置DispatcherServlet,指定配置类
	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class<?>[] {WebConfig.class};
	}

	// 将DispatcherServlet映射到"/"
	@Override
	protected String[] getServletMappings() {
		 return new String[] {"/"};
	}

	@Override
	protected void customizeRegistration(ServletRegistration.Dynamic registration) {
		// 基于StandardServletMultipartResolver的MultipartResolver相关配置:
		// 1.配置Servlet 3.0对multipart的支持, 将上传文件的临时存储目录设置在"/tmp/uploads"中。
		// 2.上传文件的最大容量（以字节为单位）。默认是没有限制的。(限制文件的大小不超过2MB)
		// 3.整个multipart请求的最大容量（以字节为单位），不会关心有多少个part以及每个part的大小。默认是没有限制的。(整个请求不超过4MB)
		// 4.在上传的过程中，如果文件大小达到了一个指定最大容量（以字节为单位），将会写入到临时文件路径中。默认值为0，也就是所有上传的文件都会写入到磁盘上。(所有的文件都要写到磁盘中)
//		registration.setMultipartConfig(new MultipartConfigElement("/tmp/uploads", 2097152, 4194304, 0));
	}
}
